# coding:UTF-8
# ________________________
# Project_Name:pythonProject
# File_Name:Administrator
# Author:Administrator
# Date_Time:2022/4/21 10:05
# Description:
# ________________________
'''元素的查找是基于WebDriver的对象driver
元素的操作是基于WebElement类'''
from selenium import webdriver
import time

from selenium.webdriver.common.by import By


def foo1():
    # 打开浏览器
    driver = webdriver.Chrome()
    # 最大化浏览器
    driver.maximize_window()
    # 浏览器打开指定url
    driver.get("https://www.baidu.com")
    #1.先通过driver找到元素
    element = driver.find_element(By.ID,"kw")
    #2.对找到的元素进行操作
    element.send_keys("51放假安排")   #模拟键盘输入
    time.sleep(2)

    driver.quit()

def  foo2():
    """
    通过name属性定位
    ：return: None
    """
    # 打开浏览器
    driver = webdriver.Chrome()
    # 最大化浏览器
    driver.maximize_window()
    # 浏览器打开指定url
    driver.get("https://www.baidu.com")
    # 1.通过driver找到元素
    driver.find_element(By.NAME, "wd").send_keys("51放假安排")
    time.sleep(2)

    driver.quit()

def  foo3():
    """
    通过classname属性定位
    一般用于定位多个元素
    ：return: None
    """
    driver = webdriver.Chrome()
    # 最大化浏览器
    driver.maximize_window()
    # 浏览器打开指定url
    driver.get("https://www.baidu.com")
    # 1.通过driver找到元素
    elements = driver.find_elements(By.CLASS_NAME, "mnav")   # 查找多个元素
    for el in elements:
        print(el.text) #打印文本元素内容
    time.sleep(2)

    driver.quit()

def foo4():
    """
    通过link text定位元素
    ：return: None
    """
    # 打开浏览器
    driver = webdriver.Chrome()
    # 最大化浏览器
    driver.maximize_window()
    # 浏览器打开指定url
    driver.get("https://www.baidu.com")
    # 1.通过driver找到元素
    driver.find_element(By.LINK_TEXT, "新闻").click() #模拟点击鼠标左键
    time.sleep(2)

    driver.quit()

def foo5():
    """
    通过 Parttal_link_text定位元素
    通过部分链接文本定位
    ：return: None
    """
    # 打开浏览器
    driver = webdriver.Chrome()
    # 最大化浏览器
    driver.maximize_window()
    # 浏览器打开指定url
    driver.get("https://www.baidu.com")
    # 1.通过driver找到元素
    driver.find_element(By.PARTIAL_LINK_TEXT, "hao").click() #模拟点击鼠标左键
    time.sleep(2)

    driver.quit()

def foo6():
    """
    通过tag_name定位元素
    通过标签名定位多个元素
    ：return: None
    """
    # 打开浏览器
    driver = webdriver.Chrome()
    # 最大化浏览器
    driver.maximize_window()
    # 浏览器打开指定url
    driver.get("https://www.baidu.com")
    # 1.通过driver找到元素
    els = driver.find_elements(By.TAG_NAME, "a")
    for el in els:
        print(el.text)

    driver.quit()

def foo7():
    """
    通过 css selector定位元素
    通过css选择器定位元素
    ：return: None
    """
    # 打开浏览器
    driver = webdriver.Chrome()
    # 最大化浏览器
    driver.maximize_window()
    # 浏览器打开指定url
    driver.get("https://www.baidu.com")
    # 1.通过driver找到元素
    driver.find_element(By.CSS_SELECTOR, "s-user.csv-setting-pfmenu").click() #模拟点击鼠标左键
    time.sleep(2)

    driver.quit()

def foo8():
    """
    通过 xpath定位元素
    最强大最慢的定位方式
    ：return: None
    """
    # 打开浏览器
    driver = webdriver.Chrome()
    # 最大化浏览器
    driver.maximize_window()
    # 浏览器打开指定url
    driver.get("https://www.baidu.com")
    # 1.通过driver找到元素
    driver.find_element(By.XPATH,'//*[@id="s-top-left"]/div[1]/a[1]').click() #模拟点击鼠标左键
    time.sleep(2)

    driver.quit()

if __name__ == "__main__":
    # foo1()
    # foo2()
    # foo3()
    # foo4()
    # foo5()
    # foo6()
    # foo7()
    foo8()